package com.elinshaw.hive;

import org.apache.hadoop.hive.ql.parse.SemanticException;
import org.apache.hadoop.hive.ql.udf.generic.AbstractGenericUDAFResolver;
import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator;
import org.apache.hadoop.hive.ql.udf.generic.GenericUDAFParameterInfo;
import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;

/**
 * 　UDAF是聚合函数，相当于reduce，将表中多行数据聚合成一行结果
 * 　UDAF是需要在hive的sql语句和group by联合使用，hive的group by 对于每个分组，只能返回一条记录，这点和mysql不一样。
 * <p>
 * 开发通用UDAF有两个步骤：
 * resolver负责类型检查，操作符重载，里面创建evaluator类对象；
 * evaluator真正实现UDAF的逻辑；
 *
 * @author Administrator
 */
public class MyUDAF extends AbstractGenericUDAFResolver {

    @Override
    public GenericUDAFEvaluator getEvaluator(GenericUDAFParameterInfo info) throws SemanticException {
        return super.getEvaluator(info);
    }

    @Override
    public GenericUDAFEvaluator getEvaluator(TypeInfo[] info) throws SemanticException {
        return super.getEvaluator(info);
    }


}
